\documentclass[a4paper,10pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[portuguese,brazil]{babel}
\usepackage{setspace}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{float}
\floatstyle{boxed}

% \singlespacing Para um espaçamento simples
% \onehalfspacing Para um espaçamento de 1,5
% \doublespacing Para um espaçamento duplo


\onehalfspacing

\begin{document}

\begin{titlepage}

\begin{minipage}{0.3\linewidth}
 \includegraphics[scale = 0.35]{./figuras/minerva.png}
\end{minipage}
\begin{minipage}{0.7\linewidth}
 \noindent \textbf{Universidade Federal do Rio de Janeiro}\\
 Instituto de Matemática\\
 Departamento de Ciência da Computação\\
\end{minipage}


\vspace{3cm}
\begin{center}
\Large 
\textbf{Trabalho de simulação: implementação e análise de um simulador.}

\vspace{2cm}

\vspace{0.5cm}

Danilo S. Carvalho

\vspace{0.5cm}

Taísa L. Martins

\vspace{1.0cm}
\end{center}


\vfill

\begin{flushright}
Apresentado ao professor Paulo Henrique de Aguiar Rodrigues\\
de Avaliação e Desempenho.\\

\end{flushright}

\vspace{2cm}

\begin{center}
{Rio de Janeiro \\
2011}
\end{center}
 
\end{titlepage}

\pagebreak

%\doublespacing

\begin{center}
\large

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\
Danilo S. Carvalho

\vspace{1cm}

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\
Taísa L. Martins

\vspace{2cm}

\normalsize
\end{center}

O trabalho foi dividido na seguintes etapas, nas quais trabalharam ambos os componentes do grupo:
\begin{itemize}
	\item Modelagem, desenvolvimento e documentação do simulador;
	\item Cálculo teórico dos valores a serem estimados;
	\item Execução e análise de simulações e da corretude do simulador;
	\item Otimização do simulador;
	\item Avaliação dos resultados e elaboração do relatório.
\end{itemize}


\pagebreak

\tableofcontents
\pagebreak


\section{Introdução}
\subsection{Funcionamento Geral do Simulador}
    O simulador é um programa do tipo console (linha de comando) que ao iniciar recebe parâmetros 
através da entrada padrão. Os parâmetros podem ser digi- tados interativamente ou colocados em um arquivo, em uma ordem definida. Este arquivo pode ser redirecionado para a entrada padrão do simulador sendo assim possível armazenar várias entradas para diferentes experimentos com o simulador.
    Os parâmetros do simulador são, na ordem em que são solicitados:
\begin{itemize}
    \item \textbf{Número de rodadas}: a quantidade de rodadas que serão realizadas na simulação, desconsiderando a fase transiente.
    \item \textbf{Tamanho da rodada}: quantos fregueses terão suas estatísticas coletadas antes que a rodada seja dada como encerrada.
    \item \textbf{Tamanho da fase transiente}: quantos fregueses terão suas estatísticas ignoradas antes que o sistema esteja estabilizado.
    \item \textbf{Taxa de chegada}: a taxa ($\lambda$) com que os fregueses chegam ao sistema, entrando na primeira fila.
    \item \textbf{Taxa de serviço}: a taxa ($\mu$) de serviço de fregueses no sistema. Para nossas simulações, foi usado sempre o valor 1.
    \item \textbf{Semente de chegada}: uma semente inicial para o gerador de números pseudo-aleatórios usado nos eventos de chegada, possivelmente gerada em outra simulação, para fins de replicar experimentos.
    \item \textbf{Semente de serviço}: uma semente inicial para o gerador de números pseudo-aleatórios usado nos eventos de serviço, possivelmente gerada em outra simulação, para fins de replicar experimentos.
    \item \textbf{Modo de simulação}: o modo usado para a simulação, que pode ser (0): Batch ou (1): Replicativo.
    \item \textbf{Modo determinístico}: determina se os eventos serão gerados aleatóriamente ou deterministicamente. Usado para testar a corretude do simulador. Valores: (0): Aleatório, (1): Determinístico.
    \item \textbf{Modo Verboso}: faz o simulador produzir uma saída detalhada dos eventos ocorridos durante a simulação. Como o momento da chegada de cada freguês e a situação do sistema encontrada por ele. Valores: (0): Normal (1): Verboso.
\end{itemize}

    Além disto, o simulador pode ser executado passando como argumento da linha de comando um número 
    \textbf{k} de simulações simultâneas desejado. 
    Neste modo, o simulador realizará \textbf{k} simulações em paralelo, sendo necessário passar como entrada
    um arquivo contendo \textbf{k} seções de configuração, contendo os parâmetros na ordem descrita acima e separadas por quebra de 
    linha, sendo uma seção para cada simulação. O simulador produzirá uma saída em separado para cada simulação, 
    identificadas por um número entre [0, k-1]. Este recurso permite aproveitar o poder de processamento 
    dos computadores atuais multi-núcleo para agilizar os experimentos, mas tem como implicação a 
    necessidade de uso de um gerador de números pseudo-aleatórios otimizado para este fim (ver seção 1.4).

    As saídas do simulador são divididas em "\textbf{Resultados}", "\textbf{Mensagens}" e "\textbf{Dados gráficos}". 
\begin{itemize}
    \item "Resultados" : são os valores finais obtidos para as grandezas ao fim da simulação.
    \item "Mensagens" : são as mensagens produzidas pelo modo verboso.
    \item "Dados gráficos" : são os valores obtidos durante a simulação, que são usados para desenhar gráficos, como os da fase transiente.
\end{itemize}
    Durante o funcionamento do simulador, as saídas são armazenadas em buffers gerenciáveis em memória e são descarregadas em arquivos somente após o final da simulação. Desta forma é evitada a perda de tempo com excesso de E/S.

   %Descrever o passo-a-passo do simulador.

  Ao terminar de processar os parâmetros de entrada, o simulador é executado. Todo o seu funcionamento
  se dá através de eventos discretos ao longo de um tempo contínuo, ou seja, os eventos ocorrem em 
  instantes de tempo com valores numéricos reais.
  A cada rodada, o simulador fica em um loop onde eventos ocorrem e vão sendo processados.
  Uma rodada só termina quando a quantidade de fregueses determinada pelo parâmetro \emph{"tamanho da rodada"}
  é atendida.
  
  Os eventos que podem ocorrer são:

\begin {itemize}
\item \textbf{Chegada de um freguês ao sistema:} Um freguês chega e é inserido no final da fila 1.

\item \textbf{Término de um serviço no servidor:} Caso tenha terminado um serviço do tipo 1 
(freguês proveniente da fila 1), o freguês é movido do servidor para o final da fila 2. Caso contrário, 
houve um término de um serviço do tipo 2, o freguês do servidor é retirado do sistema e seus dados 
estatísticos podem ser ou não coletados.

\end {itemize}

    Após tratar um evento, verifica-se se o servidor está vazio. Se for o caso e existir algum freguês 
    em alguma das filas, insere-se no servidor o freguês disponível da fila mais prioritária.

    A cada rodada os dados estatísticos são coletados e analisados gerando o intervalo de confiança
    para cada variável aleatória até aquele estágio. O programa termina gerando os arquivos de 
    saída discutidos anteriormente.

\subsection{Implementação da Lista de Eventos}

    Como dito na seção anterior o simulador trabalha com dois tipos de eventos:

    \begin{itemize}
	\item Nova chegada
	\item Término de serviço
    \end{itemize}

Para não gerar eventos desnecessários, em todo momento da simulação, apenas é mantido
um evento de chegada ao sistema que representa a próxima chegada a ocorrer. Devido a isso,
foi utilizada uma variável  (m\_proxima\_chegada)  para representar quando um evento de chegada ocorre. 
Quando o tempo da simulação é igual a m\_proxima\_chegada, o evento de uma chegada é tratado,
a próxima chegada é agendada e sua ocorrência é armazenada na variável m\_proxima\_chegada.


Devido à maneira como os eventos foram escolhidos, observa-se também que é suficiente utilizar uma
variável para guardar os eventos de término de serviço (m\_termino\_servico). Como o sistema simulado 
possui apenas um servidor, ter uma variável que guarda o tempo em que o serviço atual irá terminar 
é suficiente, uma vez que em qualquer momento da simulação no máximo existirá um freguês em serviço.

Sempre que um freguês entra em serviço, um novo evento do tipo "Término de serviço" é gerado
na variável m\_termino\_servico. Quando o evento é tratado, tempo da simulação = m\_termino\_servico, 
o freguês é movido para fila 2 ou retirado do sistema e m\_termino\_servico recebe o valor infinito, representando assim, 
que não existe um próximo evento de término de serviço.

Durante toda a simulação o tempo da simulação é sempre igual ao mínimo entre m\_proxima\_chegada
e m\_termino\_servico.

\subsection{Estruturas Internas Utilizadas}


    Todo o código do simulador está comentado e foi documentado utilizando a ferramenta \emph{DoxyGen}.

    Todas as estruturas do simulador estão no namespace \emph{SimuladorAD} por uma questão de boas-práticas
de programação (evitar conflitos de nomes).

    Foram utilizadas enumerações para determinar o modo de operação do simulador (Batch ou Replicativo),
    classes, estruturas e sobrecarga do operador += (soma seguida de uma atribuição). 

    Para um detalhamento mais formal consulte a documentação no repositório http://ts-ad2011-1.googlecode.com .
  no diretório ''docs''.

\subsection{Geração das Variáveis Aleatórias}
    As variáveis aleatórias são geradas usando a inversa das funções de distribuição acumulada (PDF). Como neste simulador são analisadas apenas filas M/M/1, a única distribuição utilizada foi a exponencial, e sua inversa $\displaystyle\frac{ln(u_0 - 1)}{\lambda}$, onde $\lambda$ é a taxa da exponencial e $u_0$ é a amostra obtida a partir de um gerador de números pseudo-aleatórios distribuídos no intervalo $[0, 1)$.
O gerador de números aleatórios utilizado foi o \emph{SFMT} (SIMD oriented Fast Mersenne Twister), que é baseado no algoritmo Mersenne Twister \cite{SFMT} na sua variante de 64 bits (MT19937-64). Este gerador produz números pseudo-aleatórios com distribuição uniforme e período $2^{19937}$.
    O \emph{SFMT} foi escolhido pelos seguintes motivos:
\begin{itemize}
    \item É otimizado para execução paralela, recurso que foi usado para acelerar as simulações.
    \item É independente de plataforma, sendo possível compilá-lo para Windows ou Linux.
    \item O período da sequência aleatória é longo o suficiente para nossas simulações.
    \item Produz números com distribuição suficientemente uniforme para nossas simulações.
\end{itemize}

    No simulador são usados 2 geradores SFMT independentes, um para as chegadas no sistema e outro para o serviço. As sementes podem ser passadas como parâmetros no início da execução do programa, ou podem ser geradas com base no relógio, usando as rotinas \emph{gettimeofday} (Unix) ou \emph{QueryPerformanceCounter} (Windows). Ao fim de uma simulação, as sementes usadas são informadas como parte da saída do simulador. Isto permite reutilizar as sementes de uma simulação para reproduzir os experimentos com exatidão.

\subsection{Linguagem de Programação Utilizada}
    A linguagem de programação escolhida foi o C++. Esta escolha deve-se principalmente à restrição apresentada na descrição do trabalho "...apresentar um executável que rode sem necessidade de instalação especial em Windows 7 ou Ubuntu.". A linguagem C++ permite que o simulador seja compilado em qualquer sistema operacional com um compilador C++, como o GCC no Linux ou o VC++ no Windows, e executado em qualquer sistema com compatibilidade binária com os executáveis compilados. Outras alternativas, como Java ou Python, necessitam de ambientes especiais (máquinas virtuais ou interpretadores) para poderem ser executadas.
Outros fatores importantes para a escolha da linguagem foram a familiaridade dos componentes do grupo com o C++ e a presença de recursos como filas, listas e buffers gerenciáveis de entrada e saída, disponíveis para uso nesta linguagem.

\subsection{Método usado}

    O simulador pode funcionar tanto em modo batch como em modo replicativo. O modo de funcionamento do simulador é um parâmetro de entrada.
Os modos de funcionamento foram implementados da seguinte maneira:
\begin{itemize}
    \item Cada freguês que chega ao sistema recebe uma cor, guardada em seu atributo "cor". A cor pode ser interpretada simplesmente como um número inteiro de 32 bits ou como um valor RGBA, que representa uma cor (visualmente).
    \item A classe geradora de eventos exponenciais é iniciada com uma semente aleatória ou definida.
    \item Se o método escolhido for o batch:
    \begin{enumerate}
        \item É feita a limpeza das estruturas internas do simulador e a classe geradora de eventos exponenciais gera o tempo da primeira chegada.
        \item É iniciada uma primeira rodada, de cor preta (cor = 0), para a fase transiente, 
cujo tamanho \textbf{L} também é um parâmetro do simulador.
        \item Ao término da fase transiente, o simulador realiza um número \textbf{n} de rodadas, onde
 n é também um parâmetro do simulador. Cada rodada é identificada com uma cor, representada por um número \textbf{i} de 1..n
        \item Ao final de cada rodada, apenas as estatísticas de mesma cor da rodada são coletadas e os resultados são acumulados.
    \end{enumerate}

    \item Se o método escolhido for o replicativo:
    \begin{enumerate}
        \item É feita a limpeza das estruturas internas do simulador e a classe geradora de eventos exponenciais gera o tempo da primeira chegada.
        \item É iniciada uma primeira rodada, de cor preta, para a fase transiente, de tamanho \textbf{L}.
        \item Ao término da fase transiente, o simulador realiza uma rodada válida, de cor igual a 1.
        \item As estatísticas de cor 1 são coletadas e os resultados são acumulados.
        \item Repete o primeiro passo \textbf{n} vezes.
    \end{enumerate}

    \item Os resultados acumulados são usados para estimar as grandezas de inte-resse, incluindo o intervalo de confiança.
    \item Em ambos os modos de funcionamento, o estado do gerador de números pseudo-aleatórios é mantido entre as rodadas, de forma a não ocorrer sobreposição das sequências aleatórias.
\end{itemize}

\subsection{Coleta de Estatísticas}
% Falamos sobre a coleta de estatísticas e cálculo delas(Variância e IC).

A coleta de estatísticas é feita sempre que um freguês sai do sistema. Neste momento, verifica-se se o 
freguês pertence à rodada atual. Em caso negativo, os dados do freguês são descartados. Caso contrário,
suas estatísticas são coletadas.

Para o cálculo da média usou-se o estimador da média :


 \begin{center}
  $\displaystyle{\frac{\sum^{N}_{i = 1} X_i}{N}}$;\\
 \end{center}

Para o cálculo da variância usou-se o estimador iterativo da variância:

\begin{center}
 $\displaystyle{\frac{\sum^{N}_{i = 1} X_{i}^{2}}{N-1} - \frac{(\sum^{N}_{i = 1} X_{i})^2}{N(N-1)}}$.  \\
\end{center}



\subsection{Tempo Gasto Para Simulação}

Foram utilizados dois netbooks com processador Intel Atom N270, operando a 1.6 GHz.

Este processador possui o recurso \textit{Hyperthreading} que simula a presença de duas unidades de processamento
utilizando sessões diferentes do mesmo circuito. Isto possibilitou testes rápidos de paralelismo.

O simulador foi testado no sistema operacional Linux (Ubuntu 10.04 LTS - Lucid Lynx e Debian - versão Lenny).

Para os experimentos o simulador foi executado em modo paralelo com 5 threads, uma para cada valor de utilização do sistema ($\rho$).

Para estimar a fase transiente foi gasto cerca de dois dias. Esse tempo se deve a grande dificuldade em se obter
uma boa estimativa para o tamanho da fase transiente. O cálculo real usado nesse relatório foi obtido em 
3 minutos.

\pagebreak

\section{Teste de Corretude}

Para garantir a integridade dos resultados obtidos através de uma simulação, primeiramente é necessário
garantir, com um certo grau de confiabilidade, a corretude do simulador. 
Geralmente a abordagem padrão é submeter o simulador a casos conhecidos, entradas em que se sabe como o sistema
irá se comportar, e observar se os resultados da simulação são iguais ao esperado.

Para o simulador em questão foi utilizada essa técnica submetendo-o a cenários determinísticos
(onde o tempo entre chegadas e o tempo de serviço de um freguês eram fixos). 
Os valores fixos utilizados para cada variável aleatória foram as suas respectivas médias de acordo com 
as suas distribuições. Em todas as situações usou-se tempo de serviço = 1 ( $ \mu = 1$).

\subsection*{Modo Batch}

\textbf{Cenário 1 - filas 1 e 2 estão em equilíbrio\\}

Para qualquer $\lambda < 0.5$ (tempo entre chegadas > 2),
a cada chegada o freguês típico sempre irá encontrar o sistema vazio pois o tempo entre chegadas será
sempre maior que 2 (tempo para concluir o serviço 1 e 2). Logo o que se espera é que apenas o valor médio
de $T_1$ e $T_2$  sejam iguais a 1 e o restante igual a zero.\\

\textbf{ \textit{Simulação $\lambda$ = 0.1}}\\

\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Entrada:
1
3
0
0.1
1
0
0
0
1
1

\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Modo da simulação: 0
Número de rodadas: 1
Tamanho da rodada: 3
Tamanho da fase transiente: 0
Taxa de chegada (lambda): 0.1
Taxa de serviço: 1
Semente de chegada: 1027967820
Semente de serviço: 342687276
Modo deterministico: 1

\end{verbatim}
\end{minipage}

\begin{verbatim}
Médias:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | c | c | c | c |}
  \hline
  E[$N_1$] & E[$Nq_1$] & E[$T_1$] & E[$W_1$] & E[$VarW_1$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  E[$N_2$] & E[$Nq_2$] & E[$T_2$] & E[$W_2$] & E[$VarW_2$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  \end{tabular}
\end{center}

\begin{verbatim}
Saída verbosa:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | l |}
  \hline
  Tempo de Simulação & Evento \\ \hline
  10 & Fregues de id  0 chega no sistema.\\ \hline 
10 & Fregues de id  0 da fila1 entra no servidor.\\ \hline
11 & Fregues de id  0 da fila1 terminou o servico no servidor.\\ \hline
11 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
12 & Fregues de id  0 da fila2 terminou o servico no servidor.\\ \hline
20 & Fregues de id  1 chega no sistema.\\ \hline 
20 & Fregues de id  1 da fila1 entra no servidor.\\ \hline
21 & Fregues de id  1 da fila1 terminou o servico no servidor.\\ \hline
21 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
22 & Fregues de id  1 da fila2 terminou o servico no servidor.\\ \hline
30 & Fregues de id  2 chega no sistema.\\ \hline 
30 & Fregues de id  2 da fila1 entra no servidor.\\ \hline
31 & Fregues de id  2 da fila1 terminou o servico no servidor.\\ \hline
31 & Fregues de id  2 da fila2 entra no servidor.\\ \hline
32 & Fregues de id  2 da fila2 terminou o servico no servidor.\\ \hline

  \end{tabular}
\end{center}

\vspace{0.5cm}

\textbf{ \textit{Simulação $\lambda$ = 0.45}}\\

\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Entrada:
2
2
0
0.45
1
0
0
0
1
1

\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Modo da simulação: 0
Número de rodadas: 2
Tamanho da rodada: 2
Tamanho da fase transiente: 0
Taxa de chegada (lambda): 0.45
Taxa de serviço: 1
Semente de chegada: 2138574700
Semente de serviço: 1432807934
Modo deterministico: 1

\end{verbatim}
\end{minipage}


\begin{verbatim}
Médias:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | c | c | c | c |}
  \hline
  E[$N_1$] & E[$Nq_1$] & E[$T_1$] & E[$W_1$] & E[$VarW_1$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  E[$N_2$] & E[$Nq_2$] & E[$T_2$] & E[$W_2$] & E[$VarW_2$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  \end{tabular}
\end{center}

\begin{verbatim}
Saída verbosa:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | l |}
  \hline
  Tempo de Simulação & Evento \\ \hline
  
2.22222 & Fregues de id 0 chega no sistema.\\ \hline
2.22222 & Fregues de id  0 da fila1 entra no servidor.\\ \hline
3.22222 & Fregues de id  0 da fila1 terminou o servico no servidor.\\ \hline
3.22222 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
4.22222 & Fregues de id 0 da fila2 terminou o servico no servidor.\\ \hline
4.44444 & Fregues de id 1 chega no sistema.\\ \hline
4.44444 & Fregues de id  1 da fila1 entra no servidor.\\ \hline
5.44444 & Fregues de id  1 da fila1 terminou o servico no servidor.\\ \hline
5.44444 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
6.44444 & Fregues de id 1 da fila2 terminou o servico no servidor.\\ \hline
6.66667 & Fregues de id 2 chega no sistema.\\ \hline
6.66667 & Fregues de id  2 da fila1 entra no servidor.\\ \hline
7.66667 & Fregues de id  2 da fila1 terminou o servico no servidor.\\ \hline
7.66667 & Fregues de id  2 da fila2 entra no servidor.\\ \hline
8.66667 & Fregues de id 2 da fila2 terminou o servico no servidor.\\ \hline
8.88889 & Fregues de id 3 chega no sistema.\\ \hline
8.88889 & Fregues de id  3 da fila1 entra no servidor.\\ \hline
9.88889 & Fregues de id  3 da fila1 terminou o servico no servidor.\\ \hline
9.88889 & Fregues de id  3 da fila2 entra no servidor.\\ \hline
10.8889 & Fregues de id 3 da fila2 terminou o servico no servidor.\\ \hline
  \end{tabular}
\end{center}

\vspace{0.5cm}

\textbf{ \textit{Simulação $\lambda$ = 0.45 (entrada grande)}}\\


\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Entrada:
10000
1024
0
0.45
1
0
0
0
1
0

\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Modo da simulação: 0
Número de rodadas: 10000
Tamanho da rodada: 1024
Tamanho da fase transiente: 0
Taxa de chegada (lambda): 0.45
Taxa de serviço: 1
Semente de chegada: 1370194213
Semente de serviço: 8801157
Modo deterministico: 1

\end{verbatim}
\end{minipage}


\begin{verbatim}
Médias:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | c | c | c | c |}
  \hline
  E[$N_1$] & E[$Nq_1$] & E[$T_1$] & E[$W_1$] & E[$VarW_1$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  E[$N_2$] & E[$Nq_2$] & E[$T_2$] & E[$W_2$] & E[$VarW_2$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  \end{tabular}
\end{center}

\vspace{0.5cm}

Contemplando os resultados do cenário 1 observa-se que a saída do simulador se comportou como o esperado.
Mesmo no limiar de 0.45 e para valores grandes de entrada as médias se mantiveram as mesmas.

\textbf{Cenário 2 - fila 1 está em equilíbrio e a fila 2 não\\}

Para qualquer $0.5 <= \lambda <  1$ ( 1 <= tempo entre chegadas  < 2), 

um freguês qualquer sempre encontra a fila 1 vazia porém a fila 2 cresce indefinidamente.

Isso ocorre pois como a fila 1 é prioritária e interrompe a fila 2, toda vez que um freguês típico chega, 
para ele, é como se não existissem os fregueses da fila 2. 
Como o tempo entre chegadas é maior do que o tempo do serviço 1, o freguês típico sempre encontra a fila 1
vazia.

Quando o freguês típico chega na fila 2, uma unidade de tempo já passou e como o tempo entre chegadas é menor
que o tempo do segundo serviço, o freguês da fila 2 sempre é interrompido e a cada unidade de tempo chega um
novo freguês à fila 2 advindo do serviço 1.

Como o tempo entre chegadas a fila 1 é menor que a soma dos tempos dos serviços 1 e 2, 
uma parte de um serviço 2 sempre é executada entre as chegadas ao sistema, gerando assim, uma vazão 
de fregueses maior do que zero na saída do sistema. 

Face ao exposto, a taxa de fregueses que entram na fila 2 sempre é maior do que a taxa com que sai ocasionando um 
crescimento contínuo do tamanho da fila 2.

Espera-se, então, que a saída para os dados da fila 1 se mantenham igual aos casos de testes anteriores e 
que $E[N_2], E[Nq_2], E[W_2], E[T_2]$ cresçam conforme se aumente o número de fregueses coletados e
que a $Var[W_2] $ seja constante e maior que zero.


\vspace{0.5cm}

\textbf{ \textit{Simulação $\lambda$ = 0.8 }}\\


\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Entrada:
1
3
0
0.8
1
0
0
0
1
1

\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Modo da simulação: 0
Número de rodadas: 1
Tamanho da rodada: 3
Tamanho da fase transiente: 0
Taxa de chegada (lambda): 0.8
Taxa de serviço: 1
Semente de chegada: 220460415
Semente de serviço: 623708127
Modo deterministico: 1

\end{verbatim}
\end{minipage}


\begin{verbatim}
Médias:   
\end{verbatim}

\begin{center}
\begin{tabular} {| c | c | c | c | c |}
  \hline
  E[$N_1$] & E[$Nq_1$] & E[$T_1$] & E[$W_1$] & E[$VarW_1$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  E[$N_2$] & E[$Nq_2$] & E[$T_2$] & E[$W_2$] & E[$VarW_2$]\\ \hline
  1 & 0.333 & 8.75 & 7.75 & 14.0625 \\ \hline
  \end{tabular}
\end{center}

\vspace{0.5cm}


\begin{verbatim}
Saída verbosa:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | l |}
  \hline
  Tempo de Simulação & Evento \\ \hline
 1.25 & Fregues de id 0 chega no sistema.\\ \hline 
1.25 & Fregues de id  0 da fila1 entra no servidor.\\ \hline
2.25 & Fregues de id  0 da fila1 terminou o servico no servidor.\\ \hline
2.25 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
2.5 & Fregues de id 1 chega no sistema.\\ \hline 
2.5 & Fregues de id  1 da fila1 entra no servidor.\\ \hline
3.5 & Fregues de id  1 da fila1 terminou o servico no servidor.\\ \hline
3.5 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
3.75 & Fregues de id 2 chega no sistema.\\ \hline 
3.75 & Fregues de id  2 da fila1 entra no servidor.\\ \hline
4.75 & Fregues de id  2 da fila1 terminou o servico no servidor.\\ \hline
4.75 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
5 & Fregues de id 3 chega no sistema.\\ \hline 
5 & Fregues de id  3 da fila1 entra no servidor.\\ \hline
6 & Fregues de id  3 da fila1 terminou o servico no servidor.\\ \hline
6 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
6.25 & Fregues de id 4 chega no sistema.\\ \hline 
6.25 & Fregues de id  4 da fila1 entra no servidor.\\ \hline
7.25 & Fregues de id  4 da fila1 terminou o servico no servidor.\\ \hline
7.25 & Fregues de id  0 da fila2 entra no servidor.\\ \hline
7.25 & Fregues de id 0 da fila2 terminou o servico no servidor.\\ \hline
7.25 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
7.5 & Fregues de id 5 chega no sistema.\\ \hline 
7.5 & Fregues de id  5 da fila1 entra no servidor.\\ \hline
8.5 & Fregues de id  5 da fila1 terminou o servico no servidor.\\ \hline
8.5 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
8.75 & Fregues de id 6 chega no sistema.\\ \hline 
8.75 & Fregues de id  6 da fila1 entra no servidor.\\ \hline
9.75 & Fregues de id  6 da fila1 terminou o servico no servidor.\\ \hline
9.75 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
10 & Fregues de id 7 chega no sistema.\\ \hline 
10 & Fregues de id  7 da fila1 entra no servidor.\\ \hline
11 & Fregues de id  7 da fila1 terminou o servico no servidor.\\ \hline
11 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
11.25 & Fregues de id 8 chega no sistema.\\ \hline 
11.25 & Fregues de id  8 da fila1 entra no servidor.\\ \hline
12.25 & Fregues de id  8 da fila1 terminou o servico no servidor.\\ \hline
12.25 & Fregues de id  1 da fila2 entra no servidor.\\ \hline
12.25 & Fregues de id 1 da fila2 terminou o servico no servidor.\\ \hline

  \end{tabular}
\end{center}

\vspace{0.5cm}

\textbf{ \textit{Simulação $\lambda$ = 0.8 , sair 6 fregueses}}\\


\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Entrada:
2
3
0
0.8
1
0
0
0
1
0

\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Modo da simulação: 0
Número de rodadas: 2
Tamanho da rodada: 3
Tamanho da fase transiente: 0
Taxa de chegada (lambda): 0.8
Taxa de serviço: 1
Semente de chegada: 1968666752
Semente de serviço: 2653580096
Modo deterministico: 1

\end{verbatim}
\end{minipage}


\begin{verbatim}
Médias: 
\end{verbatim}

\begin{center}
\begin{tabular} {| c | c | c | c | c |}
  \hline
  E[$N_1$] & E[$Nq_1$] & E[$T_1$] & E[$W_1$] & E[$VarW_1$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  E[$N_2$] & E[$Nq_2$] & E[$T_2$] & E[$W_2$] & E[$VarW_2$]\\ \hline
   6 & 5.16667 & 33.125 & 32.125 & 14.0625 \\ \hline
  \end{tabular}
\end{center}

\vspace{0.5cm}

\textbf{ \textit{Simulação $\lambda$ = 0.8 , sair 12 fregueses}}\\

\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Entrada:
4
3
0
0.8
1
0
0
0
1
0

\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{verbatim}
Modo da simulação: 0
Número de rodadas: 4
Tamanho da rodada: 3
Tamanho da fase transiente: 0
Taxa de chegada (lambda): 0.8
Taxa de serviço: 1
Semente de chegada: 2039482375
Semente de serviço: 3443895719
Modo deterministico: 1

\end{verbatim}
\end{minipage}


\begin{verbatim}
Médias: 
\end{verbatim}

\begin{center}
\begin{tabular} {| c | c | c | c | c |}
  \hline
  E[$N_1$] & E[$Nq_1$] & E[$T_1$] & E[$W_1$] & E[$VarW_1$]\\ \hline
  0 & 0 & 1 & 0 & 0 \\ \hline
  E[$N_2$] & E[$Nq_2$] & E[$T_2$] & E[$W_2$] & E[$VarW_2$]\\ \hline
   67 & 66.0833 & 337.812 & 336.812 & 14.0625 \\ \hline
  \end{tabular}
\end{center}


\vspace{0.5cm}

Comparando os testes do cenário 2 podemos observar que o simulador se comporta como o esperado e que
de fato $N_2$ está crescendo indefinidamente (observar o salto que $N_2$ dá comparando os casos em que
sairam 3, 6 e 12 fregueses). 

\textbf{Cenário 3 - filas 1 e 2 não estão em equilíbrio\\}


Para qualquer $\lambda >= 1$ (tempo entre chegadas < 1), as fila 1 e 2 crescem 
indefinidamente uma vez que o tempo entre chegadas é menor do que o tempo do serviço 1.
E como a fila 1 sempre vai ter alguém para ser atendido os fregueses da fila 2 nunca irão ser atendidos
uma vez que a fila 1 é prioritária.

\vspace{0.5cm}

\textbf{ \textit{Simulação $\lambda$ = 2 , 1 rodada de 10 pessoas CHEGANDO passo a passo}}\\

\textit{Como nesse caso não sai ninguém do sistema essa execução foi feita de maneira diferente das demais.
Alterou-se o código para imprimir a saída verbosa ao longo da simulação, ao invés de só escrever no final,
e após um determinado tempo (1 seg.) a simulação foi cancelada uma vez que como não tem nenhum fluxo de saída
o simulador ficaria em loop até consumir toda a memória do computador.}


\begin{verbatim}
Entrada
1
10
0
2.0
1
0
0
0
1
1

Saída verbosa:  
\end{verbatim}

\begin{center}
\begin{tabular} {| c | l |}
  \hline
  Tempo de Simulação & Evento \\ \hline
 0.5 & Fregues de id 0 chega no sistema.\\ \hline
0.5 & Fregues de id  0 da fila1 entra no servidor.\\ \hline
1   & Fregues de id 1 chega no sistema.\\ \hline 
1.5 & Fregues de id 2 chega no sistema.\\ \hline 
1.5 & Fregues de id  0 da fila1 terminou o servico no servidor.\\ \hline
1.5 & Fregues de id  1 da fila1 entra no servidor.\\ \hline
2   & Fregues de id 3 chega no sistema.\\ \hline 
2.5 & Fregues de id 4 chega no sistema.\\ \hline 
2.5 & Fregues de id  1 da fila1 terminou o servico no servidor.\\ \hline
2.5 & Fregues de id  2 da fila1 entra no servidor.\\ \hline
3   & Fregues de id 5 chega no sistema.\\ \hline 
3.5 & Fregues de id 6 chega no sistema.\\ \hline 
3.5 & Fregues de id  2 da fila1 terminou o servico no servidor.\\ \hline
3.5 & Fregues de id  3 da fila1 entra no servidor.\\ \hline
4   & Fregues de id 7 chega no sistema.\\ \hline 
4.5 & Fregues de id 8 chega no sistema.\\ \hline 
4.5 & Fregues de id  3 da fila1 terminou o servico no servidor.\\ \hline
4.5 & Fregues de id  4 da fila1 entra no servidor.\\ \hline
5   & Fregues de id 9 chega no sistema.\\ \hline 
5.5 & Fregues de id 10 chega no sistema.\\ \hline 
5.5 & Fregues de id  4 da fila1 terminou o servico no servidor.\\ \hline
5.5 & Fregues de id  5 da fila1 entra no servidor.\\ \hline

  \end{tabular}
\end{center}

\vspace{0.5cm}

Ao analisar a tabela concluimos que o simulador se comporta como o previsto, $N_1$ cresce indefinidamente 
e nenhum freguês da fila 2 é atendido.

\subsection*{Modo Replicativo}

Aplicando os cenários ao método replicativo observa-se que a saída gerada pelo simulador é similar
a saída do método batch gerando as mesmas médias, o que já era esperado.

Garantindo-se assim uma margem de confiabilidade do simulador. 

Apenas esses testes não são suficientes para provar a corretude do simulador, porém, eles são um bom indicativo
de que o simulador está funcionando corretamente. Outros testes pertinentes seriam testar a geração dos números aleatórios,
observar o simulador sobre condições de estresse, entre outros. Tais testes aumentariam a margem de confiabilidade porém, 
devido a dificuldade e ao tempo, tais testes não foram implementados.

\pagebreak

\section{Estimativa da fase transiente}

  Ao analisar os resultados de uma simulação, as amostras de interesse são as obtidas quando o 
sistema se encontra em equilíbrio. Assim, deseja-se descartar a fase transiente,
ou seja, os resultados iniciais das simulações quando o sistema não está em equilíbrio.

A maior dificuldade em estimar o tamanho da fase transiente é a impossibilidade de determinar o seu 
término com muita clareza. Devido a isso, todos os métodos associados à remoção dos dados deste período 
são, por conseqüência, heurísticos.

Dentre os métodos existentes, escolhemos o método de observação visual por ser simples e de fácil
implementação. Este método consiste em construir, para cada variável, um gráfico que representa o seu comportamento ao longo 
do tempo. Então, de forma aproximada, procura-se observar o momento em que os valores começam a se 
estabilizar representando o fim da fase transiente.
 

Escolheu-se examinar uma janela de 150.000 fregueses (1000 rodadas de 150 fregueses). 
Para garantir que o tamanho da fase transiente não dependesse da semente inicial, utilizou-se
10 sementes escolhidas aleatoriamente para a elaboração do gráfico de cada variável.
Além disso, para cada valor de utilização (0.2, 0.4, 0.6, 0.8 e 0.9) foi gerado um gráfico com a finalidade
de se escolher um tamanho de fase transiente o mais adequado possível para cada valor de utilização.

Ao analisar os gráficos em anexo, observa-se que a variável que mais demora para se estabilizar é a $Var(W_2)$
e seu valor de utilização crítico foi 0.9 onde foram gastas 600 rodadas de 150 fregueses, ou seja, 90.000 
fregueses para seu valor entrar em equilíbrio.

Observando o comportamento da variância de $W_2$ (variável aleatória crítica)
estimou-se a fase transiente para cada valor de utilização pedido.
As figuras \ref{figTransienteFCFSfila2VarWLambda010} a \ref{figTransienteLCFSfila2VarWLambda040} são referentes aos gráficos da $Var(W_2)$.

\begin{center}
\begin{tabular} { | l | l | }
    \hline
    $\rho$  & Fase transiente estável \\ \hline
    0.2		& 45.000 \\ \hline
    0.4         & 45.000 \\ \hline
    0.6        	& 67.500 \\ \hline
    0.8	       	& 75.000 \\ \hline
    0.9         & 90.000 \\ \hline
\end{tabular}
\label{Tabela ro}
\end{center}

\pagebreak

\section{Tabelas com resultados e comentários pertinentes}

Para calcular os valores estimados com um intervalo de confiança de 95\%
iniciou-se as simulações com 1000 rodadas de 25 mil fregueses e fase transiente correspondente a da tabela \ref{Tabela ro}.
A cada simulação em que não se era possível atribuir qualidade ao valor estimado, executava-se uma nova simulação com
o número de rodadas multiplicado por 10.

Como os resultados das simulações em modo batch ou replicativo implicariam em resultados muito próximos, 
foi escolhido apenas o modo de execução batch.
Essa escolha foi dada pois como no método batch só se esxecuta a fase transiente uma vez, esse método é 
mais rápido do que o replicativo e, caso o tamanho da fase transiente tenha sido mal escolhido,
 com uma quantidade grande de rodadas a fase transiente
 passa a não exercer uma influência grande no cálculo do Intervalo de Confiança.

A escolha do tamanho da rodada se deu em relação a uma comparação com o tamanho da fase transiente. 
Como as fases transientes para cada $\rho $ variavam em cerca de 25.000 fregueses, estimou-se que este seria
um bom número para o tamanho de uma rodada.

Os cenários que garantiram uma boa qualidade foram:

\begin{itemize}
\item 100 rodadas com 25 mil fregueses, com $\lambda$ = 0.1 e $\mu$ = 1.0. Fase transiente de 45 mil fregueses. Modo batch.
\item 100 rodadas com 25 mil fregueses, com $\lambda$ = 0.2 e $\mu$ = 1.0. Fase transiente de 45 mil fregueses. Modo batch.
\item 1000 rodadas com 25 mil fregueses, com $\lambda$ = 0.3 e $\mu$ = 1.0. Fase transiente de 67.5 mil fregueses. Modo batch.
\item 1000 rodadas com 25 mil fregueses, com $\lambda$ = 0.4 e $\mu$ = 1.0. Fase transiente de 75 mil fregueses. Modo batch.
\item 1000 rodadas com 25 mil fregueses, com $\lambda$ = 0.45 e $\mu$ = 1.0. Fase transiente de 90 mil fregueses. Modo batch.
\end{itemize}

Com base nos conhecimentos aprendidos em sala de aula, foram realizados os cálculos para os valores
teóricos em função de $\lambda$ ( $\mu $ constante igual a 1).

\begin{itemize}
\item $N_1 = \frac{\lambda}{1 - \lambda}$
\item $Nq_1 = \frac{\lambda ^2}{1 - \lambda} $
\item $W_1 = \frac{\lambda}{1 - \lambda}$
\item $T_1 = \frac{1}{1 - \lambda} $
\item $Var(W_1) = \frac{\lambda(2 - \lambda)}{(1 - \lambda)^2} $

\item $N_2 = \lambda T_2$
\item $Nq_2 = \lambda W_2 $
\item $W_2 =  \frac{ 3 \lambda + Nq_1 + N_1 }{1-2 \lambda}$
\item $T_2 =  W_2 + 1$
\end{itemize}

Os resultados das simulações e valores analíticos foram condensados na tabela a seguir. Para cada variável aleatória,
utilizou-se a seguinte ordem nos valores:
<\emph{Valor Teórico}>, <\emph{Valor Estimado}>, <\emph{Intervalo de Confiança}>.

\begin{centering}
\begin{table}[htp]
\makebox[\textwidth]
{
  \begin{tabular} {| c | c | c | c | c | c | c |}
  \hline
  $\rho$ & \multicolumn{3}{| c |} {E[$N_1$]} & \multicolumn{3}{| c |} {E[$N_2$]} \\ \hline
  0.2 & 0.111112 	& 0.110344 & 0.000494142 & 0.1528	& 0.152885 & 0.000800424 \\ \hline
  0.4 & 0.25		& 0.251182 & 0.00102494 & 0.5	& 0.500973 & 0.00292734 \\ \hline
  0.6 & 0.428572	& 0.666418 & 0.000956862 & 1.3929	& 4.65701 & 0.0204887 \\ \hline
  0.8 & 0.666667	& 0.666293 & 0.000304199 & 4.6667	& 4.66295 & 0.00626859 \\ \hline
  0.9 & 0.818182	& x & x \% & 11.864	& x & x \% \\ \hline
  $\rho$ & \multicolumn{3}{| c |} {E[$Nq_1$]} & \multicolumn{3}{| c |} {E[$Nq_2$]} \\ \hline
  0.2 & 0.01111 	& 0.0110108 & 0.000190745 & 0.0528	& 0.0526656 & 0.00056255 \\ \hline
  0.4 & 0.05		& 0.0507204 & 0.000549812 & 0.3	& 0.30119 & 0.00257073 \\ \hline
  0.6 & 0.12857		& 0.266524 & 0.000728368 & 1.0929	& 4.25708 & 0.0203415 \\ \hline
  0.8 & 0.26667		& 0.266405 & 0.000231561 & 4.2667	& 4.26294 & 0.00622535 \\ \hline
  0.9 & 0.36819		& x & x \% & 11.414	& x & x \% \\ \hline

  $\rho$ & \multicolumn{3}{| c |} {E[$T_1$]} & \multicolumn{3}{| c |} {E[$T_2$]} \\ \hline
  0.2 & 1.11112 	& 1.10813 & 0.00155797 & 1.5278	& 1.52629 & 0.0032702 \\ \hline
  0.4 & 1.25		& 1.25157 & 0.00226971 & 2.5	& 4.65169 & 0.0284802 \\ \hline
  0.6 & 1.42858		& 1.66577 & 0.00148412 & 4.643	& 11.6444 & 0.0448093 \\ \hline
  0.8 & 1.66667		& 1.66607 & 0.000478921 & 11.667	& 11.6588 & 0.0137223 \\ \hline
  0.9 & 1.81819		& x & x \% & 26.364	& x & x \% \\ \hline

  $\rho$ & \multicolumn{3}{| c |} {E[$W_1$]} & \multicolumn{3}{| c |} {E[$W_2$]} \\ \hline
  0.2 & 0.111112 	& 0.110238 & 0.000692091 & 0.52778	& 0.526031 & 0.00260303 \\ \hline
  0.4 & 0.25		& 0.251141 & 0.0014011 & 1.5	& 3.65224 & 0.0282849 \\ \hline
  0.6 & 0.428572	& 0.666053 & 0.00124184 & 3.643	& 10.6444 & 0.0446841 \\ \hline
  0.8 & 0.666667	& 0.666137 & 0.000400806 & 10.6667	& 10.6588 & 0.0136891 \\ \hline
  0.9 & 0.818182	& x & x \% & 25.3637	& x & x \% \\ \hline

  $\rho$ & \multicolumn{3}{| c |} {Var($W_1$)} & \multicolumn{3}{| c |} {Var($W_2$)} \\ \hline
  0.2 & 0.23457 	& 0.232688 & 0.00279259 & -	& 1.48552 & 0.0165699 \\ \hline
  0.4 & 0.5626		& 1.03973 & 0.012194 & -	& 26.2682 & 0.674683 \\ \hline
  0.6 & 1.04082		& 1.77553 & 0.00740653 & -	& 163.005 & 2.0639 \% \\ \hline
  0.8 & 1.77778		& 1.77522 & 0.00236466 & -	& 163.681 & 0.640632 \\ \hline
  0.9 & 2.3058		& x & x \% & -	& x & x \% \\ \hline
  \end{tabular}
}
\caption{Tabela com os resultados da simulação.}
\end{table}
\end{centering}

Analisando as tabelas, pode-se que o intervalo de confiança está errado uma vez que o valor analítico não se encontra dentro dele.
Tentou-se descobrir o que poderia estar errado mas não conseguimos encontrar o erro.

Observamos a própria conta do intervalo de confiança, o gerador de números aleatórios, 
os cálculos da estimativa da variância, ... porém não descobrimos o erro.

Mas vale ressaltar que mesmo o cálculo do intervalo de confiança estando errado os valores estão convergindo para os teóricos.

\pagebreak


\section{Otimização}

Pensou-se em otimizar observando gráficos de número de rodadas por intervalo de confiança e realizando 
uma busca binária com combinações de tamanho de rodada e número de rodadas mas não deu tempo de implementar.

\pagebreak

\section{Conclusão}

O grupo teve dificuldade na determinação da fase transiente e não conseguiu calcular com exatidão o intervalo
de confiança das variáveis. As ferramentas utilizadas e a otimização do código permitiram replicar os experimentos
com rapidez.

Entretanto, notamos que algumas melhorias poderiam ser implementadas, de forma a tornar o simulador
mais interessante como uma aplicação para uso não-acadêmico.
 
As melhorias sugeridas:

> Automatizar o cálculo do tamanho da fase transiente
> Melhorar a saída gráfica
> Tornar o simulador mais genérico, capaz de simular outros tipos de fila


\section{Gráficos}



\begin{figure}
	\caption{Estimativa da V.A. $N_1$, $\rho$ = 0.20}
	\label{graf0__ro0.2N1}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2N1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_1$, $\rho$ = 0.40}
	\label{graf1__ro0.4N1}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4N1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_1$, $\rho$ = 0.60}
	\label{graf2__ro0.6N1}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6N1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_1$, $\rho$ = 0.80}
	\label{graf3__ro0.8N1}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8N1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_1$, $\rho$ = 0.90}
	\label{graf4__ro0.9N1}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9N1.png}
\end{figure}



\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $Nq_1$, $\rho$ = 0.20}
	\label{graf0__ro0.2Nq1}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2Nq1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_1$, $\rho$ = 0.40}
	\label{graf1__ro0.4Nq1}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4Nq1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_1$, $\rho$ = 0.60}
	\label{graf2__ro0.6Nq1}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6Nq1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_1$, $\rho$ = 0.80}
	\label{graf3__ro0.8Nq1}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8Nq1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_1$, $\rho$ = 0.90}
	\label{graf4__ro0.9Nq1}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9Nq1.png}
\end{figure}


\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $W_1$, $\rho$ = 0.20}
	\label{graf0__ro0.2W1}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2W1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_1$, $\rho$ = 0.40}
	\label{graf1__ro0.4W1}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4W1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_1$, $\rho$ = 0.60}
	\label{graf2__ro0.6W1}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6W1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_1$, $\rho$ = 0.80}
	\label{graf3__ro0.8W1}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8W1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_1$, $\rho$ = 0.90}
	\label{graf4__ro0.9W1}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9W1.png}
\end{figure}

\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $vW_1$, $\rho$ = 0.20}
	\label{graf0__ro0.2vW1}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2vW1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_1$, $\rho$ = 0.40}
	\label{graf1__ro0.4W1}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4vW1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_1$, $\rho$ = 0.60}
	\label{graf2__ro0.6vW1}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6vW1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_1$, $\rho$ = 0.80}
	\label{graf3__ro0.8vW1}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8vW1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_1$, $\rho$ = 0.90}
	\label{graf4__ro0.9vW1}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9vW1.png}
\end{figure}


\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $T_1$, $\rho$ = 0.20}
	\label{graf0__ro0.2T1}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2T1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_1$, $\rho$ = 0.40}
	\label{graf1__ro0.4T1}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4T1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_1$, $\rho$ = 0.60}
	\label{graf2__ro0.6T1}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6T1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_1$, $\rho$ = 0.80}
	\label{graf3__ro0.8T1}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8T1.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_1$, $\rho$ = 0.90}
	\label{graf4__ro0.9T1}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9T1.png}
\end{figure}


\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $N_2$, $\rho$ = 0.20}
	\label{graf0__ro0.2N2}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2N2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_2$, $\rho$ = 0.40}
	\label{graf1__ro0.4N2}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4N2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_2$, $\rho$ = 0.60}
	\label{graf2__ro0.6N2}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6N2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_2$, $\rho$ = 0.80}
	\label{graf3__ro0.8N2}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8N2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $N_2$, $\rho$ = 0.90}
	\label{graf4__ro0.9N2}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9N2.png}
\end{figure}


\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $Nq_2$, $\rho$ = 0.20}
	\label{graf0__ro0.2Nq2}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2Nq2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_2$, $\rho$ = 0.40}
	\label{graf1__ro0.4Nq2}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4Nq2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_2$, $\rho$ = 0.60}
	\label{graf2__ro0.6Nq2}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6Nq2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_2$, $\rho$ = 0.80}
	\label{graf3__ro0.8Nq2}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8Nq2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $Nq_2$, $\rho$ = 0.90}
	\label{graf4__ro0.9Nq2}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9Nq2.png}
\end{figure}


\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $W_2$, $\rho$ = 0.20}
	\label{graf0__ro0.2W2}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2W2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_2$, $\rho$ = 0.40}
	\label{graf1__ro0.4W2}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4W2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_2$, $\rho$ = 0.60}
	\label{graf2__ro0.6W2}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6W2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_2$, $\rho$ = 0.80}
	\label{graf3__ro0.8W2}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8W2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $W_2$, $\rho$ = 0.90}
	\label{graf4__ro0.9W2}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9W2.png}
\end{figure}

\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $vW_2$, $\rho$ = 0.20}
	\label{graf0__ro0.2vW2}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2vW2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_2$, $\rho$ = 0.40}
	\label{graf1__ro0.4W2}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4vW2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_2$, $\rho$ = 0.60}
	\label{graf2__ro0.6vW2}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6vW2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_2$, $\rho$ = 0.80}
	\label{graf3__ro0.8vW2}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8vW2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $vW_2$, $\rho$ = 0.90}
	\label{graf4__ro0.9vW2}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9vW2.png}
\end{figure}

\clearpage

\begin{figure}
	\caption{Estimativa da V.A. $T_2$, $\rho$ = 0.20}
	\label{graf0__ro0.2T2}
	\includegraphics[scale = 0.20]{./transiente/graf0__ro0_2T2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_2$, $\rho$ = 0.40}
	\label{graf1__ro0.4T2}
	\includegraphics[scale = 0.20]{./transiente/graf1__ro0_4T2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_2$, $\rho$ = 0.60}
	\label{graf2__ro0.6T2}
	\includegraphics[scale = 0.20]{./transiente/graf2__ro0_6T2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_2$, $\rho$ = 0.80}
	\label{graf3__ro0.8T2}
	\includegraphics[scale = 0.20]{./transiente/graf3__ro0_8T2.png}
\end{figure}


\begin{figure}
	\caption{Estimativa da V.A. $T_2$, $\rho$ = 0.90}
	\label{graf4__ro0.9T2}
	\includegraphics[scale = 0.20]{./transiente/graf4__ro0_9T2.png}
\end{figure}

\end{document}
